L’objet de cette page est de présenter l’approche adoptée pour analyser les donneés temporelles associées aux camions et captées par le système SIWIM, puis pour construire le meilleur modèle de prédiction possible.
Nous avons décidé de partir sur une prévision dans l’heure, donc nous allons agréger les donnnées par date et par heure. Par cette opération, nous allons compter le nombre de camions, sommer les poids et les distances entre esseiux des camions et enfin prendre la moyenne de température, de la vitesse des camions.
Nous créeons ensuite un certain nombre de variables catégorielles et numériques autour du temps (année, mois, semaine, jour, jour de la semaine.
Voici une réprsentation graphique des différentes données :
Quelques indications de la disribution par jour et par heure.
Plusieurs périodes montrent un manque de données dû surement à une défection du système SIWIM. L’idee de reconstituer les valeurs de fréquences par interpolation linéaire ou spline. Pou cela, nous allons compléter la série temporelle par les dates et heures manquantes.
| Dates et heures manquantes |
|---|
| 2017-09-15 02:00:00 |
| 2017-09-14 03:00:00 |
| 2017-08-27 17:00:00 |
| 2017-10-09 08:00:00 |
| 2017-08-24 08:00:00 |
Nous construisons un nouveau data set uniquement pour les dates et heures manquantes. Les données catégorielles et numériques liées au temps sont déduites en même temps. Enfin, nous fusionnons le dataset de données existantes et celui de données manquantes.
Nous réalisons ensuite une interpolation linéaire et spline sur le dataset complet.
L’interpolation spline semble mieux compléter la série temporelle.
Avant d’utiliser d’appliquer un modèle classique sur les séries temporelles, nous devons vérifier si elle est stationnaire. Une série temporelle stationnaire doit satisfaire 3 critères : + sa moyenne doit être constante dans le temps + sa variance doit être indépendante du temps + la covariance entre termes doit être indépendante du temps.
Le test de Dickey-fuller a pour hypothèse \(H_0\) qu’une racine unitaire est présente dans une modèle auto-regressif d’ordre 1. L’hypothèse alternative est la stationnarité de la série temporelle.
\(y_t = \rho y_{t-1} + u_t\). Une racine unitaire est présente si \(\rho = 1\).
Cette équation est reformulée par différence de \(y_t\) avec \(y_{t-1}\) : \(\nabla y_t = (\rho - 1) y_{t-1} + u_t = \delta y_{t-1} + u_t\)
L’hypothèse \(H_0\) devient : \(\delta = 0\). 2 autres versions du test existent : + avec une constante intiale : \(y_t = a_0 + \rho y_{t-1} + u_t\) + avec une tendance temporelle : \(y_t = a_0 + a_1 t+ \rho y_{t-1} + u_t\)
Le test augmenté de Dickey-fuller supprime tous les effets structurels dus aux autocorrelations d’ordre supérieur à 1.
##
## Augmented Dickey-Fuller Test
##
## data: siwim_data_hours$Count
## Dickey-Fuller = -3.6732, Lag order = 168, p-value = 0.02561
## alternative hypothesis: stationary
Le nombre de différences requises pour que la série soit stationnaire est de \(0\)
La fonction d’autocorrelation (ACF) mesure la correlation entre la série temporelle et elle-même décalée dans le temps (lags t-1, t-2, etc.). Par exemple, pour le lag d’ordre 5, ACF compare la série temporelle à l’instant t avec la série temporelle à l’instant t-5.
Pour une série de type moyenne mobile de lag n, il n’y aura aucune corrélation entre \(x(t)\) et \(x(t-n-1)\). Donc, le graphique d’autocorrélation passe en dessous d’une certaine valeur au \(n^{ème}\) lag. De cette manière, on trouve l’ordre idéal pour une série de type MA (Moving average).
La fonction d’autocorrélation partielle mesure la corrélation entre une série temporelle et elle-même décalée dans le temps, après avoir éliminé les varaitions déjà expliquées par les comparaisons intermédiaires (dus aux lags précédents). PAr exemple, pour le lag d’ordre 5, elle va comparer la corrélation avec l’instant t, mais elle supprime les effets adèjà expliqués par les lags 1 à 4.
A l’instar du graphique ACF, PACF passera en dessous d’une certaine valeur après un certain lag qui donne l’ordre d’une série de type AR (auto-regressive). Par exemple, si on prendre une série AR d’ordre 1 et si on exclut l’effet du lag d’ordre 1 (\(x(t-1)\)), le lag d’ordre 2 (\(x(t-2)\)) est indépendant de \(x(t)\). Donc la fonction d’autocorrélation partielle diminuera rapidement après le lag d’ordre 1.
On peut constater que le graphique ACF nous indique un ordre MA de 8 et le graphique PACF nous indique un ordre AR de 1.
Number of AR (Auto-Regressive) terms (p): AR terms are just lags of dependent variable. For instance if p is 5, the predictors for x(t) will be x(t-1)..x(t-5). Number of MA (Moving Average) terms (q): MA terms are lagged forecast errors in prediction equation. For instance if q is 5, the predictors for x(t) will be e(t-1)..e(t-5) where e(i) is the difference between the moving average at ith instant and actual value. Number of Differences (d): These are the number of nonseasonal differences, i.e. in this case we took the first order difference. So either we can pass that variable and put d=0 or pass the original variable and put d=1. Both will generate same results.
q - The lag value where the ACF chart crosses the upper confidence interval for the first time p - The lag value where the PACF chart crosses the upper confidence interval for the first time.
\(p = 1\) and \(q = 8\)
| ME | RMSE | MAE | MPE | MAPE | MASE | ACF1 | |
|---|---|---|---|---|---|---|---|
| Modèle AR | 0.0551125 | 23.44477 | 15.64161 | -42.58471 | 59.65201 | 1.0077004 | 0.2510202 |
| Modèle MA | 0.0129023 | 22.13703 | 15.36456 | -67.18720 | 82.54818 | 0.9898522 | 0.0101378 |
| Modèle ARMA | 0.0302862 | 21.43891 | 14.38407 | -35.04558 | 59.21652 | 0.9266842 | 0.0223771 |
| Modèle auto ARIMA | 0.0286759 | 20.37799 | 13.58248 | -44.71983 | 64.20429 | 0.3918990 | 0.0004520 |
| Modèle ARIMA avec saison | 0.0286759 | 20.37799 | 13.58248 | -44.71983 | 64.20429 | 0.3918990 | 0.0004520 |
| Modèle ARIMA avec double saison | 0.0364122 | 20.43041 | 13.51384 | -41.33014 | 60.19032 | 0.3870543 | -0.0007796 |
| ME | RMSE | MAE | MPE | MAPE | MASE | ACF1 | |
|---|---|---|---|---|---|---|---|
| Sipmle Expoential Smoothing | 0.0660460 | 23.83423 | 15.52235 | -13.43676 | 40.45712 | 0.4478706 | 0.2272056 |
| Expoential Smoothing | -0.4874021 | 23.86568 | 15.59277 | -17.08559 | 42.09580 | 0.4499023 | 0.2274684 |
## Previous New
## 0.8792895 0.9545746
Résultats de la sélection :
## (Intercept) Heure01 Heure02
## 9.59421759 -1.09020865 0.54205982
## Heure03 Heure04 Heure05
## 2.64088171 1.63177828 11.86325680
## Heure06 Heure07 Heure08
## 26.84855041 43.32919136 9.67081567
## Heure09 Heure10 Heure11
## 11.92554829 17.92234708 10.30276396
## Heure12 Heure13 Heure14
## 12.39874845 19.02926018 28.53946273
## Heure15 Heure16 Heure17
## 21.89094857 11.08178061 2.39168501
## Heure18 Heure19 Heure20
## -3.62807002 -6.43401699 -7.42600959
## Heure21 Heure22 Heure23
## -5.58118969 -4.73008825 -2.14588119
## Jour_semainedimanche Jour_semainejeudi Jour_semainemardi
## -12.31223273 2.75519186 -2.16598716
## Jour_semainemercredi Jour_semainesamedi Jour_semainevendredi
## 3.02810112 -12.31277735 0.92405967
## lag_1 lag_2 lag_4
## 0.75114780 0.14287950 -0.05637018
## lag_9 lag_15 lag_23
## -0.10768881 0.05869562 0.05299710
## lag_27 lag_29 lag_45
## -0.08286029 0.05671318 -0.06393391
## lag_95 lag_100 lag_111
## -0.04298543 0.03068071 -0.02257531
## lag_143 lag_164 lag_168
## 0.02357880 0.03073459 -0.02753100
## lag_90
## 0.02578676
Les séries temporelles sont des observations ordonnées chronologiquement. Ainsi, contrairment aux données non temporelles, leur ordre a une importance dont il faut tenir compte lors de la validation croisée. Pour cela 2 approches existent :
estimation du modèle sur un sous-échantillon dont la taille augmente de façon incrémentale, en tenant compte de l’odre temporel des données. La prévision est réalisée sur les valeurs postérieures à cet échantillon pour un horizon de prévision donné.
estimation du modèle sur un groupe défini par une fenêtre glissante de taille fixe. La prévision est réalisée sur les valeurs postérieures à cet échantillon pour un horizon de prévision donné.
Validation croisée sur série temporelle